The present invention relates to the field of computer graphics, and in particular to methods and apparatus for authoring and editing animation of computer graphics models. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
In computer-generated animation, an object's appearance is defined by a two or three-dimensional computer model. To appear realistic, the computer model of an object is often extremely complex, having millions of surfaces and tens of thousands of attributes. Due to the complexity involved with animating such complex models, particularly character models with hundreds or thousands of degrees of freedom, animation software tools often rely on computer graphics variables and associated computer graphics variable functions to define the attributes of objects. Examples of computer graphics variables include animation variables, shader relationships, weighting relationships, and mappings of influence between computer graphics components. Computer graphics variable functions associate input values to a corresponding output values according to some rule or mathematical expression. Computer graphics variable functions may be functions of an input time variable or any other type of input.
For example, animation variables, which are sometimes referred to as avars, are parameters used by functions to modify the position, or pose, of all or a portion of a model. Animation variables and their associated functions can specify relatively simple motions, such as the translation and rotation of objects. For example, animation variables can specify the rotation angles of the joints of a character model, thereby positioning the character model's limbs and appendages. Animation variables and their associated functions are also used to abstract complicated modifications to a model to a relatively simple control. For example, a complicated animation variable can define the degree of opening of a character's mouth. In this example, the value of a single animation variable is provided to one or more computer graphics variable functions to determine the positions of many different parts of the character model needed to open the characters mouth to the desired degree. In this example, animation software tools then modify the character model according to the outputs of the computer graphics variable functions to produce a character model posed with an open mouth.
In typical animation software applications, users define computer graphics images and animated sequences by specifying the values of computer graphics variables of an object, and hence the pose of an object, at one or more key frames. A computer graphics variable value and its associated input value, such as a time or frame value, is referred to as a knot. A set of one or more knots at a given input value defined by a user or another application, such as an inverse kinematic system, is referred to as an authored pose of an object.
Based on the authored poses of one or more objects, an animation system determines the poses of object for frames, time values, or any other type of input values where authored poses are not defined. Typically, animation systems interpolate the values of its computer graphics variables from the knots of authored knots. A variety of different interpolation schemes are used in animation, including linear, cubic, b-spline, Bezier, and Catmull-Rom. Typically, animation tools will display a line or curve, such as a spline curve, defined by one or more knots of a computer graphics variable and the interpolation scheme.
Precise control of the timing, rhythm, values, and interpolation of computer graphics variable knots is essential to achieving artistically effective animation. Subtle adjustments in the value, timing, and interpolation of knots can greatly change the artistic impact of animation. During animation, many gestures or actions are comprised of large numbers of knots from one or more computer graphics variables acting in concert to achieve the desired motion.
Despite the importance of timing, rhythm, values, and interpolation of computer graphics variable knots to achieve artistically effective animation, most animation software interfaces focus on the creation and manipulation of individual computer graphics knots, rather than the overall poses of an object. This makes it difficult for users to define and modify the timing, rhythm, values, and interpolation in terms of poses of an object, as opposed to individual knots.